package com.xcrj.java8.idefaultfunc;

/**
 * xcrj 接口静态方法，接口默认方法，让接口具有抽象能力和向下兼容能力
 * 接口默认方法出现的原因：接口增加抽象方法，修改抽象方法之后，所有的实现类都需要修改，破坏了向下兼容
 * 接口的静态方法，只能通过接口名.静态方法调用
 * 接口默认方法, 通过实现类调用
 * 接口默认方法，可以被@Override
 * - 实现类@Override接口的default方法，调用实现类的方法
 * 为了向下兼容
 * - 类 extends类 implements接口，调用继承类的方法，类优先（为了向下兼容）
 * 类 implements接口1,接口2，必须@Override default方法
 */
public class Test1 {
    public static void main(String[] args) {
        // 调用接口静态方法
        MyInterface.staticFunc();

        // 调用接口默认方法
        ImplClass implClass=new ImplClass();
        implClass.defaultFunc();

        // 类实现接口的默认方法
        MyInterface implClass1=new ImplClass1();
        implClass1.defaultFunc();

        // 类 extends类 implements接口，类优先（为了向下兼容）
        ImplClass2 implClass2=new ImplClass2();
        implClass2.defaultFunc();

        
    }
}
